package com.mo.demo;

import java.util.*;

public class MyCache {

    public void test(){
        // 新建一个Map结构的缓存
        Map<String,User> userCache =  new HashMap<>();

        // 一次性获取全部用户
        List<User> userList = getFromDatabase();
        for (User user : userList) {
            // 以用户的id作为缓存的key，存入缓存中
            userCache.put(user.getId(),user);
        }

        // 处理用户id是1相关的业务
        doUser1(userCache);

        // 处理用户id是2相关的业务
        doUser2(userCache);
    }

    private void doUser2(Map<String, User> userCache) {
        // 首获取 用户1 的数据，这时不用从数据库查找了，直接从缓存中获取即可
        User user = userCache.get("2");
        // 处理用户数据
        doSomething(user);
    }

    private void doUser1(Map<String, User> userCache) {
        // 首获取 用户1 的数据，这时不用从数据库查找了，直接从缓存中获取即可
        User user = userCache.get("1");

        // 处理用户数据
        doSomething(user);
    }

    /**
     * 处理用户数据
     * @param user
     */
    private void doSomething(User user) {

    }

    /**
     * 模拟从数据库获取所有用户数据
     * @return
     */
    private List<User> getFromDatabase() {
        return new ArrayList<>(){{
            add(new User(){{
                setId("1");
                setName("李雷");
            }});
            add(new User(){{
                setId("2");
                setName("韩梅梅");
            }});
        }};
    }
}
